package com.browsesoft.tools;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.browsesoft.htmlcomponent.HTMLBasicComponent;
import com.browsesoft.htmlcomponent.HTMLContextModel;

/**
 * 显示周开始结束时间的model
 */
public class HTMLWeekTimeModel implements HTMLContextModel {
	/**
	 * 当前周开始日期
	 */
	private BSCalendar monday = null;

	/**
	 * 日期的显示格式
	 */
	private String format = null;

	/**
	 * 构造函数
	 */
	public HTMLWeekTimeModel() {
	}

	/**
	 * 得到内容
	 * 
	 * @return 内容
	 */
	public String getContext() {
		// 返回本周时间串
		String start = monday.toString(this.format);
		String end = monday.getCalendarAfterDay(6).toString(this.format);
		return start + "-" + end;
	}

	/**
	 * 初始化
	 * 
	 * @param request
	 *            请求
	 * @throws Exception
	 */
	public void init(HttpServletRequest request) throws Exception {
		// 得到系统当前所在周的起始日期
		// monday = BSCalendar.now().getMonday();
	}

	/**
	 * 处理请求
	 * 
	 * @param request
	 *            请求
	 * @param response 响应
	 * @throws Exception
	 */
	public void service(HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		// 如果有动作事件
		if (request.getParameter("week") != null) {
			String value = request.getParameter("week");
			// 如果是上一周
			if (value.equals("previous")) {
				// 本周开始时间往前推7天
				this.monday = this.monday.getCalendarAfterDay(-7);
			}
			// 否则，如果是下一周
			else if (value.equals("next")) {
				// 本周开始时间往后推7天
				this.monday = this.monday.getCalendarAfterDay(7);
			}
			// 否则，如果是今天
			else if (value.equals("today")) {
				// 得到系统当前所在周的起始日期
				// monday = BSCalendar.now().getMonday();
			}
		}
	}

	/**
	 * 设置组件
	 * 
	 * @param component
	 *            组件
	 */
	public void setComponent(HTMLBasicComponent component) {
		// 得到日期的显示格式
		this.format = component.getElement().getAttribute("format");
	}

	/**
	 * 更新元素
	 * 
	 * @param c
	 *            组件
	 * @throws Exception
	 */
	public void updatePageElement(HTMLBasicComponent c) throws Exception {
	}
}